package com.hlk.article.service;

import com.hlk.pojo.bo.NewArticleBO;
import com.hlk.utils.PageResult;

import java.util.Date;

public interface ArticleService {

    /**
     * 发布文章
     *
     * @param newArticleBO
     */
    void createArticle(NewArticleBO newArticleBO);

    /**
     * 分页获取我的文章列表
     *
     * @param userId
     * @param keyword
     * @param status
     * @param startDate
     * @param endDate
     * @param page
     * @param pageSize
     * @return
     */
    PageResult selectMyList(String userId, String keyword, Integer status, Date startDate, Date endDate, Integer page, Integer pageSize);

    /**
     * 管理员获取所有文章列表
     *
     * @param status
     * @param page
     * @param pageSize
     * @return
     */
    PageResult selectAllList(Integer status, Integer page, Integer pageSize);

    /**
     * 审核文章
     *
     * @param articleId
     * @param pendingStatus
     */
    void updateArticleStatus(String articleId, Integer pendingStatus);

    /**
     * 删除文章
     *
     * @param userId
     * @param articleId
     */
    void deleteArticle(String userId, String articleId);

    /**
     * 用户撤回文章
     *
     * @param userId
     * @param articleId
     */
    void withdrawArticle(String userId, String articleId);

    /**
     * 存储到对应的文章，进行关联保存
     *
     * @param articleId
     * @param articleMongoId
     */
    void updateArticleToGridFS(String articleId, String articleMongoId);

    /**
     * 将定时发布的文章改为发布
     *
     * @param articleId
     */
    void updateArticleToPublish(String articleId);
}
